import axios from 'axios';
import { createMessage } from '@/utils/index';
import auth from '@/utils/auth';
import qs from 'qs';

const instance = axios.create({
	baseURL: '/yydream/',
	timeout: 60000,
	headers: { 'X-Custom-Header': 'custom_base' }
});

// 添加请求拦截器
instance.interceptors.request.use(
	function (config) {
		// 在发送请求之前做些什么
		config.headers.token = auth.getToken();
		if (config.method === 'get') {
			config.paramsSerializer = function (params) {
				return qs.stringify(params, { arrayFormat: 'repeat' });
			};
		}
		if (config.method === 'post' && config.headers['Content-Type'] === 'application/x-www-form-urlencoded') {
			config.data = qs.stringify(config.data, { arrayFormat: 'repeat' });
		}
		return config;
	},
	function (error) {
		// 对请求错误做些什么
		return Promise.reject(error);
	}
);

// 添加响应拦截器
instance.interceptors.response.use(
	function (response) {
		if (response.data.code == 200) {
			return response.data.data;
		}
		if (response.config.url !== '/common/logout') {
			if (!response.config.unMessage) {
				createMessage(response.data.msg, { type: 'error' });
			}
			if (response.data.code == 10006) {
				// 退出登录了
				auth.logout();
			}
		}
		return Promise.reject(response.data);
	},
	function (error) {
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		return Promise.reject(error);
	}
);

export default instance;
